package com.shawn.springboot.integeration.netty.client.factory;


import com.shawn.springboot.integeration.netty.client.IClient;
import com.shawn.springboot.integeration.netty.exception.ApiException;
import com.shawn.springboot.integeration.netty.model.ServerAddress;

import java.util.List;

/**
 * @author zhangjian
 * @title: IClientFactory
 * @projectName 12-springboot学习
 * @description: 客户端工厂
 * @date 2021/4/2711:40
 */
public interface IClientFactory {
    /**
     * 获取一个客户端连接,
     * 若是长连接,若已经建立连接,则从缓存中获取直接返回,反之创建一个新的连接
     * 若是短连接,则每次创建一个新的连接并且不保存在缓存中
     */
    IClient get(final ServerAddress address) throws ApiException;
    /**
     * 获取缓存的客户端连接对象
     */
    List<IClient> getCachedClients();
    /**
     * 移除某个客户端对象
     */
    void remove(final ServerAddress address) throws ApiException;
}
